/**
 * 发送get请求
 * @param {String} url 请求地址
 * @param {String} params 请求参数
 * @param {Function} headers 请求头
 * @param {string} dataType 返回的数据类型
 * @returns Promise 里面存放了成功和失败的数据
 */
function get(url,params={},headers={},dataType='json')
{
    return new Promise((resolve,reject)=>{
        const xhr = new XMLHttpRequest
        xhr.onreadystatechange = function()
        {
            if(xhr.readyState === 4)
            {
                if(xhr.status === 200)
                {
                    let res = xhr.responseText
                    switch(dataType)
                    {
                        case 'json':
                            res = JSON.parse(res)
                        break;
                        default:
                        break;
                    }
                    resolve(res)
                }else{
                    reject(xhr.status)
                }
            }
        }
        let tempArr = []
        for(let key in params)
        {
            tempArr.push(`${key}=${params[key]}`)
        }  
        xhr.open('get',`${url}?${tempArr.join('&')}`)
        for(let key in headers)
        {
            xhr.setRequestHeader(key,headers[key])
        }
        xhr.send(null)
    })
}

/**
 * 发送post请求
 * @param {String} url 请求地址
 * @param {String} params 请求参数
 * @param {Function} headers 请求头
 * @param {string} dataType 返回的数据类型
 * @returns Promise 里面存放了成功和失败的数据
 */
 function post(url,params={},headers={},dataType='json')
 {
     return new Promise((resolve,reject)=>{
         const xhr = new XMLHttpRequest
         xhr.onreadystatechange = function()
         {
             if(xhr.readyState === 4)
             {
                 if(xhr.status === 200)
                 {
                     let res = xhr.responseText
                     switch(dataType)
                     {
                         case 'json':
                             res = JSON.parse(res)
                            break;
                        default:
                            break;
                     }
                     resolve(res)
                 }else{
                     reject(xhr.status)
                 }
             }
         }
         xhr.open('post',url)
         xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
         for(let key in headers)
         {
             xhr.setRequestHeader(key,headers[key])
         }
        let paramsArr = []
        for(let key in params)
        {
            paramsArr.push(`${key}=${params[key]}`)
        }
        xhr.send(paramsArr.join('&'))
     })
 }
